package exception.demo01;

/**
 * @author IT_Jay
 * @date 2022/1/27 19:24
 */

public class Test {
    public static void main(String[] args) {


//        new Test().test(1,0);
        /*  运行后抛出异常
        Exception in thread "main" java.lang.ArithmeticException
	at exception.demo01.Test.test(Test.java:42)
	at exception.demo01.Test.main(Test.java:12)
         */


        //假设要捕获多个异常：从小的异常到大的异常

        try {
            //try监控区域
            new Test().a();                 //捕获到该异常后，边不会走try语句块后面的内容。可尝试与下一句调换位置，运行，比价
            System.out.println(1 / 0);

        } catch (Error e) {         //捕获异常
            System.out.println("Error");
        }catch (Exception e){
            System.out.println("Exception");
        }catch (Throwable throwable){
            System.out.println("Throwable");
        }
        finally {      //处理善后工作  ，可省；    IO流、资源关闭
            System.out.println("finally");
        }
    }

    public void a() {
        b();
    }

    public void b() {
        a();
    }

    //假设这个方法中，处理不了这个异常，在方法上抛出异常  throws
    public void test(int a,int b) throws ArithmeticException{
        if (b==0){
            throw new ArithmeticException();  //主动抛出异常 throw ，一般在方法中使用
        }
    }
}
